#include<stdio.h>

int changes(char s[],char x,int n);
	
char x='0';

void main()
{
	int n,i,k=0,b[26]={0},j;
	char y,s[8001]={0};
	printf("请输入你要的数字和字符串：\n");
	scanf("%d",&n);
	getchar();
	printf("输入数组元素:\n");
	for(i=0;i<n;i++)
	scanf("%c",&s[i]);
	for(i=0;i<n;i++){//数组 j=s[i]-'a';将字符转换成ACS码，b[]统计各个字母的个数
		j=s[i]-'a';
		b[j]++;
	}
	for(j=0;j<26;j++){ /*如果所有字母出现偶数次，那么该字符串可以进行字符间的交替，成为回文串。即(b[j]%2!=0）；*/
		if(b[j]%2!=0){
			k++; 
			x=j+'a';
		}
	}
	if(k>=2) printf("不能执行回文串\n");/*如果有两个字母或者两个字母以上出现了奇数次，那么该字符串不能通过字符间的交替成为回文串。*/
	else printf("%d\n",changes(s,x,n));
}

int changes(char s[],char x,int n)
{
int i,change=0,j,k;
	for(i=0;i<n/2;i++){
		if(s[i]==x){
	for(j=i;j<n-i-1;j++){
		if(s[n-i-1]==s[j]) continue;
		change+=j-i;
	}
	for(k=j;k>i;k--){
		s[k]=s[k-1];
		s[i]=s[n-i-1];
		}
	}
	else
	{
	for(j=n-i-1;j>=i;j--){
		if(s[i]==s[j]) break;
	change+=n-i-1-j;
		}
	for(k=j;k<n-i-1;k++){
		s[k]=s[k+1];
		s[n-i-1]=s[i]; 
		}
	}	  
}
	return change;
}
